﻿"use strict";

var ON_DEVICE = 0;
            
var NOT_FOUND = -1;

var INIT_POS = -1000; // 位置的初始值
            
var gCanvas = document.getElementById( 'c' );  //canvas itself
var gContext = gCanvas.getContext( '2d' );  // 繪圖
var gNowTime = 0; // 目前時間
var gPreviousTime = -100000; // 上一次感應到畫筆的時間

var gPreviousPhyX = INIT_POS; // 上一次畫筆的位置x
var gPreviousPhyY = INIT_POS; // 上一次畫筆的位置y
var gMonitorSpeed = 10; // 每幾毫秒監視一次
var gCutEnable = true; // 是否要將目前位置與之前位置連接起來

var gBackColor = "black"; // 背景顏色

var gPenWidth = 10; // 預設畫筆寬度
var gPenColor = "white"; // 預設畫筆顏色

var gColorWidthCount = 10; // 選擇顏色頁面橫向可放幾個方塊
var gColorHeightCount = 6; // 選擇顏色頁面直向可放幾個方塊
var gColors = new Array( gColorHeightCount * gColorWidthCount );

var gInputText = ""; // 輸入的字串
var gDrawText = "TEXT"; // 要畫出來的字串
var gTextWidth = 10; // 字串寬度

// 畫筆種類
var TYPE_PEN_LINE = 10;
var TYPE_PEN_RECTANGLE = 11;
var TYPE_PEN_CIRCLE = 12;
var TYPE_PEN_DOT = 13;
var TYPE_TEXT = 19;
var gPenStyle = TYPE_PEN_LINE; // 目前畫筆種類

var RESERVE_VALUE = -1; // 填滿空白的保留值

var TYPE_GLOBAL_VALUE = 21; // 設置全域參數
var TYPE_BUTTON = 22; // 加入按鈕
var TYPE_CONDITION = 23; // 加入條件


var gPenHistory = ""; // 目前畫筆歷史
var gPenMotionCount = 0; // 目前畫筆記錄數量
var gPenTouchCount = 0; // 目前下筆次數

var TOUCH_GAP = "_"; // 每次觸碰螢幕（下筆）的間隔字元
var MOTION_GAP = ","; // 每個操作（連線）的間隔字元
var TOKEN_GAP = " "; // 操作內每個token的間隔字元

var ENCODE_TOUCH_GAP = "︷";
var ENCODE_MOTION_GAP = "︸";
var ENCODE_TOKEN_GAP = "﹋";

var gPlaySpeed = 20; // 畫筆歷史的播放速度

var gDrawLock = false; // 是否允許畫畫

var PLAY_TIMER_MAX_COUNT = 10000;
var gPlayTimers = new Array( PLAY_TIMER_MAX_COUNT ); // 存放畫筆播放紀錄

// 滑鼠按壓狀態
var MOUSE_DOWN = 0; // 滑鼠按下
var MOUSE_UP = 1; // 滑鼠放開
var gMouseState = MOUSE_UP; // 目前滑鼠狀態

// 播放模式
var NORMAL_MODE = 0; // 隨gPlaySpeed的速率播放
var DIRECT_MODE = 1; // 直接全部一起印出

var DRAWING_MAX_COUNT = 1000; // 最多存幾張歷史圖
var gDrawingHistory = new Array( DRAWING_MAX_COUNT ); // 存放畫圖的歷史
var gDrawingIndex = -1; // 目前存到第幾張了

var gTempBackColor;
var gTempPenColor;
var gTempPenWidth;
var gTempPlaySpeed;

// 觸碰到的區域代碼
var BUTTON_DRAWING = 0;
var BUTTON_PEN = 1;
var BUTTON_ERASER = 2;
var BUTTON_COLOR = 3;
var BUTTON_UNDO = 4;
var BUTTON_REDO = 5;
var BUTTON_PLAY = 6;
var BUTTON_STOP = 7;
var BUTTON_FUNCTION = 8;
var BUTTON_FILE = 9;
var BUTTON_NEW_FILE = 10;
var BUTTON_LOAD_FILE = 11;
var BUTTON_SAVE_FILE = 12;
var BUTTON_TIMER = 13;

var BUTTON_OK = 40;
var BUTTON_CANCEL = 41;

var BUTTON_CUSTOM = 88; // 自定的按鈕
var BUTTON_NONE = 99; // 無此按鈕
var gTouchType = -1;


// 要畫出哪個頁面
var PAGE_DRAWING = 0; // 繪畫頁面
var PAGE_COLOR = 1; // 顏色頁面
var PAGE_PEN = 2; // 畫筆頁面
var PAGE_FUNCTION = 3; // 功能頁面
var PAGE_OPTION = 4; // 選項頁面
var PAGE_DEMO = 5; // 展示頁面
var PAGE_ABOUT = 6; // 關於頁面
var PAGE_MAIN = 7; // 主頁面
var gNowPage = PAGE_DRAWING;


var UNDO = 0;
var REDO = 1;
var NOWDO = 2;

var BUTTON_TYPE_NORMAL = 0;

// 單個按鈕的資訊
function ButtonData( no, page, type, x, y, width, height )
{
    this.no = no; // 按鈕編號
    this.page = page; // 按鈕所在頁面
    this.type = type; // 按鈕型別
    this.x = x; // 左上角的x
    this.y = y; // 左上角的y
    this.width = width; // 按鈕的寬度
    this.height = height; // 按鈕的高度
}
var BUTTON_MAX_COUNT = gColorHeightCount * gColorWidthCount + 1; // 螢幕上最多同時可放幾個按鈕
var gButtons = new Array( BUTTON_MAX_COUNT ); // 目前螢幕上可用的按鈕
var gNowButtonCount = 0; // 當前螢幕上的按鈕數

var gMouseDownX = INIT_POS; // 滑鼠點擊的位置x
var gMouseDownY = INIT_POS; // 滑鼠點擊的位置y
var gMouseUpX = INIT_POS; // 滑鼠放開的位置x
var gMouseUpY = INIT_POS; // 滑鼠放開的位置y

var gDrawEnable = true; // 是否允許畫圖（用於不畫出而直接取得繪圖字串）

// 存放最大和最小的坐標
function ExtremePosData( minX, minY, maxX, maxY )
{
	this.minX = minX;
	this.minY = minY;
	this.maxX = maxX;
	this.maxY = maxY;
}


var HORIZONTAL = 1; // 水平
var VERTICAL = 2; // 直立
